﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;

using System.IO; // bruges til at indlæse et billede. 


using System.Data;

using controller;
using Interface;



namespace Danren
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        /** Atributter **/

        DanrenSystem danrenSystem;

        List<IMedarbejder> iMedarbejderListe;

        List<IMedarbejder> iMedarbejderlist;


        IMedarbejder iMedarbejder; 
        
        /***** Sessions variabler *****/ 

        /***** Sessions variabler *****/

        IMedarbejder aktuelMedarbejder;
        byte[] aktuelMedarbejderBillede;




        /**Konstruktor **/
        public MainWindow()
        {
            InitializeComponent();
            this.danrenSystem = new DanrenSystem();
            updateMedarbejder();
            M_Tilstand(0);

            medarbejderBtnSøg.IsEnabled = true;
            medarbejderBtnSlet.IsEnabled = false;
            medarbejderBtnRediger.IsEnabled = false;



        }



        /**Medarbejderfane**/
        # region Medarbejderfane


        /****** Tilstands Styring *****/
        #region TilStand

        public void M_Tilstand(int tilstand)
        {
            if (tilstand == 0) // Grund tilstand
            {
                // Buttons
                medarbejderBtnOpret.Content = "Opret";

                medarbejderBtnSøg.IsEnabled = true;
                medarbejderBtnSlet.IsEnabled = false;
                medarbejderBtnRediger.IsEnabled = false;
                medarbejderBtnOpret.IsEnabled = true;
                medarbejderCbox.IsEnabled = true;

                // Textbox
                medarbejderTxtSøgekrit.IsEnabled = true;
                medarbejderTxtHusNr.IsEnabled = false;
                medarbejderTxtEmail.IsEnabled = false;
                medarbejderTxtArt.IsEnabled = false;
                medarbejderLønsatsCb.IsEnabled = false;
                medarbejderTxtAdresse.IsEnabled = false;
                medarbejderTxtAntal.IsEnabled = true;
                medarbejderTxtKommune.IsEnabled = false;
                medarbejderTxtTelefon.IsEnabled = false;
                medarbejderTxtLønnr.IsEnabled = false;
                medarbejderTxtAntal.IsEnabled = false;
                medarbejderTxtTimer.IsEnabled = false;
                medarbejderTxtNavn.IsEnabled = false;
                medarbejderTxtBemærkning.IsEnabled = false;
                medarbejderTxtCpr.IsEnabled = false;
            }

            if (tilstand == 1) // Opret tilstand
            {
                // Buttons
                medarbejderBtnOpret.Content = "Gem";
                medarbejderBtnSøg.IsEnabled = false;
                medarbejderBtnSlet.IsEnabled = false;
                medarbejderBtnRediger.IsEnabled = false;
                medarbejderBtnOpret.IsEnabled = true;
                medarbejderCbox.IsEnabled = false;
                datePickermedarbejder.IsEnabled = true;

                // Textbox
                medarbejderTxtSøgekrit.IsEnabled = false;
                medarbejderTxtHusNr.IsEnabled = false;
                medarbejderTxtEmail.IsEnabled = false;
                medarbejderTxtArt.IsEnabled = false;
                medarbejderLønsatsCb.IsEnabled = false;
                medarbejderTxtAdresse.IsEnabled = false;
                medarbejderTxtAntal.IsEnabled = true;
                medarbejderTxtKommune.IsEnabled = false;
                medarbejderTxtTelefon.IsEnabled = false;
                medarbejderTxtLønnr.IsEnabled = false;
                medarbejderTxtTimer.IsEnabled = true;
                medarbejderTxtNavn.IsEnabled = true;
                medarbejderTxtBemærkning.IsEnabled = true;
                medarbejderTxtCpr.IsEnabled = true;



                medarbejderTxtNavn.Text = "";
                medarbejderTxtTimer.Text = "";
                medarbejderTxtCpr.Text = "";
                medarbejderTxtBemærkning.Text = "";
                medarbejderTxtAntal.Text = "";


            }

            if (tilstand == 3) // Redigere tilstand
            {
                medarbejderBtnOpret.Content = "Gem";
                medarbejderBtnSøg.IsEnabled = false;
                medarbejderBtnSlet.Content = "Anullere";
                medarbejderBtnRediger.IsEnabled = false;
                medarbejderTxtSøgekrit.IsEnabled = false;
                medarbejderTxtHusNr.IsEnabled = false;
                medarbejderTxtEmail.IsEnabled = false;
                medarbejderTxtArt.IsEnabled = false;
                medarbejderLønsatsCb.IsEnabled = false;
                medarbejderTxtAdresse.IsEnabled = false;
                medarbejderTxtAntal.IsEnabled = false;
                medarbejderTxtKommune.IsEnabled = false;
                medarbejderTxtTelefon.IsEnabled = false;
                medarbejderTxtLønnr.IsEnabled = false;

                medarbejderTxtTimer.IsEnabled = true;
                medarbejderTxtNavn.IsEnabled = true;
                medarbejderTxtBemærkning.IsEnabled = true;
                medarbejderTxtCpr.IsEnabled = true;
            }

            if (tilstand == 4) // Medarbjeder valgt i listview
            {
                medarbejderBtnOpret.Content = "Opret";
                medarbejderBtnOpret.IsEnabled = true;
                medarbejderBtnSlet.IsEnabled = true;
                medarbejderBtnRediger.IsEnabled = true;
                datePickermedarbejder.IsEnabled = false;

                medarbejderTxtSøgekrit.IsEnabled = true;
                medarbejderTxtHusNr.IsEnabled = false;
                medarbejderTxtEmail.IsEnabled = false;
                medarbejderTxtArt.IsEnabled = false;
                medarbejderLønsatsCb.IsEnabled = false;
                medarbejderTxtAdresse.IsEnabled = false;
                medarbejderTxtKommune.IsEnabled = false;
                medarbejderTxtTelefon.IsEnabled = false;
                medarbejderTxtLønnr.IsEnabled = false;

                medarbejderTxtTimer.IsEnabled = false;
                medarbejderTxtAntal.IsEnabled = false;
                medarbejderTxtNavn.IsEnabled = false;
                medarbejderTxtBemærkning.IsEnabled = false;
                medarbejderTxtCpr.IsEnabled = false;


            }


        }

        #endregion


        private void medarbejderBtnOpret_Click_1(object sender, RoutedEventArgs e)
        {

            if (medarbejderBtnOpret.Content.ToString() == "Opret")
            {

                M_Tilstand(1);
            }
            else
            {
                string medarbejderNavn, bemærkninger;
                bool aktiv;
                byte[] billede;
                int cprNr, ansættelsesTimer;
                DateTime ansættelsesDato;

                medarbejderNavn = medarbejderTxtNavn.Text;
                cprNr = int.Parse(medarbejderTxtCpr.Text);
                aktiv = true;
                ansættelsesDato = DateTime.Parse(datePickermedarbejder.Text);
                ansættelsesTimer = int.Parse(medarbejderTxtTimer.Text);
                bemærkninger = medarbejderTxtBemærkning.Text;
                billede = aktuelMedarbejderBillede;

                danrenSystem.CreateMedarbejder(medarbejderNavn, cprNr, billede, aktiv, ansættelsesDato, ansættelsesTimer, bemærkninger);

                updateMedarbejder();
                M_Tilstand(4);
            }




        }

        public void updateMedarbejder()
        {

            iMedarbejderListe = danrenSystem.GetImedarbejder();

            iMedarbejderlist = danrenSystem.GetImedarbejder();

            medarbejderLview.ItemsSource = null;

            medarbejderLview.ItemsSource = iMedarbejderListe;
            
           
            medarbejderLview.ItemsSource = iMedarbejderlist;


        }

        private void medarbejderLview_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            M_Tilstand(4);
            aktuelMedarbejder = medarbejderLview.SelectedItem as IMedarbejder;
            int medarbejderId = aktuelMedarbejder.MedarbejderId;
            


            /*      ***     WORK IN PROGRESS, Michael J. Eriksen    ***
            foreach (IMedarbejder im in medarbejderLview)
            {
                Medarbejder medarbejder = new Medarbejder();
            }*/

            medarbejderTxtNavn.Text = aktuelMedarbejder.MedarbejderNavn.ToString();
            medarbejderTxtCpr.Text = aktuelMedarbejder.CprNr.ToString();
            medarbejderTxtTimer.Text = aktuelMedarbejder.AnsættelsesTimer.ToString();
            datePickermedarbejder.Text = aktuelMedarbejder.AnsætelsesDato.ToString();
            medarbejderTxtBemærkning.Text = aktuelMedarbejder.Bemærkninger.ToString();
            // medarbejderImage. = aktuelMedarbejder.Billede;

        }





        private void m_btn_indsæt_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

            dlg.ShowDialog();

            FileStream fs = new FileStream(dlg.FileName, FileMode.Open, FileAccess.Read);
            aktuelMedarbejderBillede = new byte[fs.Length];
            fs.Read(aktuelMedarbejderBillede, 0, System.Convert.ToInt32(fs.Length));
            fs.Close();

            ImageSourceConverter imgs = new ImageSourceConverter();
            medarbejderImage.SetValue(Image.SourceProperty, imgs.ConvertFromString(dlg.FileName.ToString()));
        }



        private void medarbejderBtnSøg_Click(object sender, RoutedEventArgs e)
        {


            string str = medarbejderTxtSøgekrit.Text;
            iMedarbejderlist = danrenSystem.GetImedarbejder();

            List<IMedarbejder> resultatlist = new List<IMedarbejder>();


                if (medarbejderCbox.Text == "Cpr Nr.")
                {

                    try
                    {
                        foreach (IMedarbejder m in iMedarbejderlist)
                        {
                            if (m.CprNr == int.Parse(str))
                            {

                                resultatlist.Add(m);
                                medarbejderLview.ItemsSource = null;
                                medarbejderLview.ItemsSource = resultatlist;


                            }

                        }
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("der skal være 10 tal i cprnr.");
                    }
                }

                if (medarbejderCbox.Text == "Navn")
                {

                    foreach (IMedarbejder m in iMedarbejderlist)
                    {
                        if (m.MedarbejderNavn == str.ToString())
                        {
                            resultatlist.Add(m);
                            medarbejderLview.ItemsSource = null;
                            medarbejderLview.ItemsSource = resultatlist;

                        }

                    }
                }
            
            


        }


        private void medarbejderTxtSøgekrit_TextChanged(object sender, TextChangedEventArgs e)
        {
            
            updateMedarbejder();

        }

        private void medarbejderBtnRediger_Click(object sender, RoutedEventArgs e)
        {

            M_Tilstand(3);
            aktuelMedarbejder = medarbejderLview.SelectedItem as IMedarbejder;
            int medarbejderId = aktuelMedarbejder.MedarbejderId;

            medarbejderTxtNavn.Text = aktuelMedarbejder.MedarbejderNavn.ToString();
            medarbejderTxtCpr.Text = aktuelMedarbejder.CprNr.ToString();
            medarbejderTxtTimer.Text = aktuelMedarbejder.AnsættelsesTimer.ToString();
            datePickermedarbejder.Text = aktuelMedarbejder.AnsætelsesDato.ToString();
            medarbejderTxtBemærkning.Text = aktuelMedarbejder.Bemærkninger.ToString();

            //danrenSystem.UpdateMedarbejder(medarbejderId, medarbejderNavn, cprNr, billede, aktiv, ansættelsesDato, ansættelsesTimer, bemærkninger);
           }

        private void medarbejderBtnSlet_Click(object sender, RoutedEventArgs e)
        {
            
        }
    

        }

        #endregion


        #region Kundefane

        //private void medarbejderBtnOpret_Click_1(object sender, RoutedEventArgs e)
        //{

        //    string medarbejderNavn, bemærkninger;
        //    bool aktiv;
        //    byte[] billede;
        //    int cprNr, ansættelsesTimer;
        //    DateTime ansættelsesDato;

        //    medarbejderNavn = medarbejderTxtNavn.Text;
        //    cprNr = int.Parse(medarbejderTxtCpr.Text);
        //    billede = new byte[] { 0 };
        //    aktiv = true;
        //    ansættelsesDato = DateTime.Parse(datePicker2.Text);
        //    ansættelsesTimer = int.Parse(medarbejderTxtTimer.Text);
        //    bemærkninger = medarbejderTxtBemærkning.Text;

        //    danrenSystem.CreateMedarbejder(medarbejderNavn, cprNr, billede, aktiv, ansættelsesDato, ansættelsesTimer, bemærkninger);
        //}

        //public void updateMedarbejder()
        //{
        //    iMedarbejder = danrenSystem.GetImedarbejder();
        //    medarbejderLview.ItemsSource = null;
        //    medarbejderLview.ItemsSource = iMedarbejder;
        //}


        #endregion



    }




